#ifndef _DEFINES_H
#define _DEFINES_H

#include "Utils/Types.h"
#include <assert.h>

#define GETSET(Type, Name) \
        Type Get##Name() const { \
			return m_##Name; \
        }; \
        void Set##Name(Type value) { \
			m_##Name = value; \
        }

#define GETSETR(Type, Name) \
        const Type &Get##Name() const { \
			return m_##Name; \
        }; \
        void Set##Name(const Type &value) { \
			m_##Name = value; \
        }
/*
#define CHECKED_DELETE(pointer) \
		if (pointer) { \
			delete pointer; \
			pointer = 0; \
		}
*/
//--- BASIC INCLUDES ---------
#define DIRECTINPUT_VERSION 0x0800

#define CHECKED_DELETE(x)			if(x) delete x; x=NULL;
#define CHECKED_RELEASE(x)			if(x) x->Release(); x=NULL;
#define CHECKED_DELETE_ARRAY(x)		if(x) delete [] x; x=NULL;

#define CORE CCore::GetSingletonPtr()
#define LOGGER CLogger::GetSingletonPtr()

#endif